#!/bin/bash
#La funcion se va a ejecutar esté inicializado o no el ambiente ya que tanto el instalar como el iniciar (al comienzo) loguean cosas y el ambiente no está inicializado


#variables de entorno que deberian ser definidas por el iniciar

#vamos a diferenciar entre log de instalacion y log del programa mediante
#las variables de entorno.

#Si la variable logfile esta vacia entonces vamos a estar logueando cosas del programa, si tiene algo va a ser el log de la instalacion

#Parametros:
#  1 nombre del comando, el archivo de log sera esto seguido de la extension de los logs
#  2 mensaje mas descriptivo del error
#  3 tipo de log: I, W, E, SE 

function Grabar_L {
	command="$1"
	msg="$2"
	msgType=$3

	if [ $# -lt 2 ]; then
		echo "Grabar_L: Faltan parámetros." >&2
		return 1
	fi

	if [ -z "${LOGEXT}" ]; then
		LOGEXT='.log'
	fi 	

	
	if [ ! -z "${LOGDIR}" ]; then
		if [ ! -z "${GRUPO}" ]; then
			LOGFILEAUX="${GRUPO}/${LOGDIR}"		
		else
			LOGFILEAUX="${LOGDIR}"
		fi
	else
		LOGFILEAUX="."
	fi
	
	LOGFILE="$LOGFILEAUX/$command${LOGEXT}"
	if [ ! -f "${LOGFILE}" ]; then
		touch "${LOGFILE}"
		if [ ! -f "${LOGFILE}" ]; then
			echo "No se puede crear el archivo de log" >&2
			return 1;
		fi
	fi

	
	if [ ! -f "${LOGFILE}" -o ! -w "${LOGFILE}" ]; then
		echo "No se puede escribir en el archivo de log:" >&2
		echo "${LOGFILE}" >&2
		return 1;
	fi
	
	if [ "${CONTROLSIZE}" ]; then
		COUNT=`wc -l < "${LOGFILE}"`
		if [ "${COUNT}" -gt "${LOGSIZE}" ]; then
			#truncamos el archivo dejando la ultima cuarta parte del mismo.
			let noTruncadas=${LOGSIZE}/4
			#archivo demasiado grande, escribo truncando lo anterior.
			IFS="
"
			lineas=`tail -n ${noTruncadas} "${LOGFILE}"`
			cat /dev/null > "${LOGFILE}"

			#FIXME: estaria bueno que se pueda hacer de otra forma esto
			for i in ${lineas}; do
				echo "${i}" >> "${LOGFILE}"
			done
			echo "---------- El archivo se ha excedido de tamaño y fue truncado. -------------" >> "${LOGFILE}"
		fi
	fi
	
	
	echo "`date`-`whoami`-$command-$msgType-$msg" >> "${LOGFILE}"
	return 0;
}
	
if [[ $BASH_SOURCE == $0 ]]; then
	Grabar_L "$@"
fi
